home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / share / system-config-printer / statereason.py < prev    next >
Text File  |  2009-10-19  |  5KB  |  137 lines

  1. #!/usr/bin/env python
  2.  
  3. ## Copyright (C) 2007, 2008, 2009 Tim Waugh <twaugh@redhat.com>
  4. ## Copyright (C) 2007, 2008, 2009 Red Hat, Inc.
  5.  
  6. ## This program is free software; you can redistribute it and/or modify
  7. ## it under the terms of the GNU General Public License as published by
  8. ## the Free Software Foundation; either version 2 of the License, or
  9. ## (at your option) any later version.
  10.  
  11. ## This program is distributed in the hope that it will be useful,
  12. ## but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. ## GNU General Public License for more details.
  15.  
  16. ## You should have received a copy of the GNU General Public License
  17. ## along with this program; if not, write to the Free Software
  18. ## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  19.  
  20. _ = lambda x: x
  21. def set_gettext_function (fn):
  22.     global _
  23.     _ = fn
  24.  
  25. class StateReason:
  26.     REPORT=1
  27.     WARNING=2
  28.     ERROR=3
  29.  
  30.     LEVEL_ICON={
  31.         REPORT: "info",
  32.         WARNING: "important",
  33.         ERROR: "error"
  34.         }
  35.  
  36.     def __init__(self, printer, reason):
  37.         self.printer = printer
  38.         self.reason = reason
  39.         self.level = None
  40.         self.canonical_reason = None
  41.  
  42.     def get_printer (self):
  43.         return self.printer
  44.  
  45.     def get_level (self):
  46.         if self.level != None:
  47.             return self.level
  48.  
  49.         if (self.reason.endswith ("-report") or
  50.             self.reason == "connecting-to-device"):
  51.             self.level = self.REPORT
  52.         elif self.reason.endswith ("-warning"):
  53.             self.level = self.WARNING
  54.         else:
  55.             self.level = self.ERROR
  56.         return self.level
  57.  
  58.     def get_reason (self):
  59.         if self.canonical_reason:
  60.             return self.canonical_reason
  61.  
  62.         level = self.get_level ()
  63.         reason = self.reason
  64.         if level == self.WARNING and reason.endswith ("-warning"):
  65.             reason = reason[:-8]
  66.         elif level == self.ERROR and reason.endswith ("-error"):
  67.             reason = reason[:-6]
  68.         self.canonical_reason = reason
  69.         return self.canonical_reason
  70.  
  71.     def __repr__ (self):
  72.         if self.level == self.REPORT:
  73.             level = "REPORT"
  74.         elif self.level == self.WARNING:
  75.             level = "WARNING"
  76.         else:
  77.             level = "ERROR"
  78.  
  79.         return "<statereason.StateReason (%s,%s,%s)>" % (level,
  80.                                                          self.get_printer (),
  81.                                                          self.get_reason ())
  82.  
  83.     def get_description (self):
  84.         messages = {
  85.             'toner-low': (_("Toner low"),
  86.                           _("Printer '%s' is low on toner.")),
  87.             'toner-empty': (_("Toner empty"),
  88.                             _("Printer '%s' has no toner left.")),
  89.             'cover-open': (_("Cover open"),
  90.                            _("The cover is open on printer '%s'.")),
  91.             'door-open': (_("Door open"),
  92.                           _("The door is open on printer '%s'.")),
  93.             'media-low': (_("Paper low"),
  94.                           _("Printer '%s' is low on paper.")),
  95.             'media-empty': (_("Out of paper"),
  96.                             _("Printer '%s' is out of paper.")),
  97.             'marker-supply-low': (_("Ink low"),
  98.                                   _("Printer '%s' is low on ink.")),
  99.             'marker-supply-empty': (_("Ink empty"),
  100.                                     _("Printer '%s' has no ink left.")),
  101.             'offline': (_("Printer off-line"),
  102.                         _("Printer '%s' is currently off-line.")),
  103.             'connecting-to-device': (_("Not connected?"),
  104.                                      _("Printer '%s' may not be connected.")),
  105.             'other': (_("Printer error"),
  106.                       _("There is a problem on printer '%s'.")),
  107.             }
  108.         try:
  109.             (title, text) = messages[self.get_reason ()]
  110.             try:
  111.                 text = text % self.get_printer ()
  112.             except TypeError:
  113.                 # Probably an incorrect translation, missing a '%s'.
  114.                 pass
  115.         except KeyError:
  116.             if self.get_level () == self.REPORT:
  117.                 title = _("Printer report")
  118.             elif self.get_level () == self.WARNING:
  119.                 title = _("Printer warning")
  120.             elif self.get_level () == self.ERROR:
  121.                 title = _("Printer error")
  122.             text = _("Printer '%s': '%s'.") % (self.get_printer (),
  123.                                                self.get_reason ())
  124.         return (title, text)
  125.  
  126.     def get_tuple (self):
  127.         return (self.get_level (), self.get_printer (), self.get_reason ())
  128.  
  129.     def __cmp__(self, other):
  130.         if other == None:
  131.             return 1
  132.         if other.get_level () != self.get_level ():
  133.             return cmp (self.get_level (), other.get_level ())
  134.         if other.get_printer () != self.get_printer ():
  135.             return cmp (other.get_printer (), self.get_printer ())
  136.         return cmp (other.get_reason (), self.get_reason ())
  137.